<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta http-equiv="Content-Language" content="zh-CN"><title>nss-myhostname
  中文手册 [金步国]</title><style>
@font-face { font-family: "JinBuGuoWebMono"; src: url("http://www.jinbuguo.com/d/mono.ttf") format("truetype"); }
* { font-family: "JinBuGuoWebMono", "Ubuntu Mono", "Consolas", "Menlo", monospace; }
body { margin:10px; }
h1 { text-align:center; background:#ddd; }
h2#auth_name { text-align:center; margin: 10px 5%; }

    a.headerlink {
      color: #c60f0f;
      font-size: 0.8em;
      padding: 0 4px 0 4px;
      text-decoration: none;
      visibility: hidden;
    }

    a.headerlink:hover {
      background-color: #c60f0f;
      color: white;
    }

    h1:hover > a.headerlink, h2:hover > a.headerlink, h3:hover > a.headerlink, dt:hover > a.headerlink {
      visibility: visible;
    }
</style><script> var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?d286c55b63a3c54a1e43d10d4c203e75"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); </script></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><h1>nss-myhostname 中文手册</h1><h2 id="auth_name">译者：<strong><a href="../index.html">金步国</a></strong></h2><hr><h3>版权声明</h3><p>本文译者是一位开源理念的坚定支持者，所以本文虽然不是软件，但是遵照开源的精神发布。</p><ul><li>无担保：本文译者不保证译文内容准确无误，亦不承担任何由于使用此文档所导致的损失。</li><li>自由使用：任何人都可以自由的<u>阅读/链接/打印</u>此文档，无需任何附加条件。</li><li>名誉权：任何人都可以自由的<u>转载/引用/再创作</u>此文档，但必须保留译者署名并注明出处。</li></ul><h3>其他作品</h3><p>本文译者十分愿意与他人分享劳动成果，如果你对我的其他翻译作品或者技术文章有兴趣，可以在如下位置查看现有的作品集：</p><ul><li><a href="../index.html">金步国作品集</a> [ <a href="../index.html">http://www.jinbuguo.com/</a> ]</li></ul><h3>联系方式</h3><p>由于译者水平有限，因此不能保证译文内容准确无误。如果你发现了译文中的错误(哪怕是错别字也好)，请来信指出，任何提高译文质量的建议我都将虚心接纳。</p><ul><li>Email(QQ)：70171448在QQ邮箱</li></ul><hr><a href="systemd.index.html">手册索引</a> ·
  <a href="systemd.directives.html">指令索引</a><span style="float:right">systemd-241</span><hr><div class="refentry"><a name="nss-myhostname"></a><div class="titlepage"></div><div class="refnamediv"><h2>名称</h2><p>nss-myhostname, libnss_myhostname.so.2 — 为本地配置的系统主机名
    提供解析功能</p></div><div class="refsynopsisdiv"><h2>大纲</h2><p><code class="filename">libnss_myhostname.so.2</code></p></div><div class="refsect1"><a name="id-1.5"></a><h2 id="描述">描述<a class="headerlink" title="Permalink to this headline" href="nss-myhostname.html#%E6%8F%8F%E8%BF%B0">¶</a></h2><p><span class="command"><strong>nss-myhostname</strong></span> 是一个 <span class="command"><strong>glibc</strong></span>(GNU C Library) NSS(Name Service Switch) 插件，
    提供了解析本地配置的系统主机名的功能。
    所谓"本地配置的系统主机名"其实就是
    <a href="http://man7.org/linux/man-pages/man2/gethostname.2.html"><span class="citerefentry"><span class="refentrytitle">gethostname</span>(2)</span></a> 函数的返回值。
    该模块的解析规则如下：</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>本机的主机名
      将会被解析为所有本地IP地址，并按照他们所属的 scope 排序。
      如果 scope 不存在，
      则会被解析为本地回环接口上的 IPv4 127.0.0.2
      以及 IPv6 ::1</p></li><li class="listitem"><p>"<code class="literal">localhost</code>" 与
      "<code class="literal">localhost.localdomain</code>" 以及所有以
      "<code class="literal">.localhost</code>" 或 "<code class="literal">.localhost.localdomain</code>" 结尾的主机名，
      都会被解析为 127.0.0.1 与 ::1 </p></li><li class="listitem"><p>"<code class="literal">_gateway</code>" 会被
      解析为当前所有的默认网关地址，
      并按照地址的数字顺序排序。
      这样就为当前网关分配了一个固定的主机名，
      从而可以让应用程序在不关心网络配置的情况下，直接引用网关。</p></li></ul></div><p>许多软件依赖于存在一个可以永远被解析的本地主机名。
    当使用动态主机名的时候，
    传统的做法是在主机名发生变化的同时修改 <code class="filename">/etc/hosts</code> 文件。
    这种做法的缺点在于要求
    <code class="filename">/etc</code> 目录必须是可写的，
    而且有可能在修改 <code class="filename">/etc/hosts</code> 文件的同时，
    系统管理员也正在编辑它。启用 <span class="command"><strong>nss-myhostname</strong></span> 之后，
    就可以不必修改 <code class="filename">/etc/hosts</code> 文件。更进一步，
    在许多系统上甚至无需存在这个文件。</p><p>要激活此NSS模块，可将 "<code class="literal">myhostname</code>" 添加到 <code class="filename">/etc/nsswitch.conf</code> 文件中以
    "<code class="literal">hosts:</code>" 开头的行里面。</p><p>建议将 "<code class="literal">myhostname</code>" 放置在 <code class="filename">nsswitch.conf</code> 文件中以
    "<code class="literal">hosts:</code>" 开头的行的末尾，以确保优先使用传统的基于DNS与
    <code class="filename">/etc/hosts</code> 文件的解析方法。</p></div><div class="refsect1"><a name="id-1.6"></a><h2 id="例子">例子<a class="headerlink" title="Permalink to this headline" href="nss-myhostname.html#%E4%BE%8B%E5%AD%90">¶</a></h2><p>下面是一个正确开启了 <span class="command"><strong>nss-myhostname</strong></span> 插件的
    <code class="filename">/etc/nsswitch.conf</code> 文件的例子：</p><pre class="programlisting">passwd:         compat mymachines systemd
group:          compat mymachines systemd
shadow:         compat

hosts:          files mymachines resolve [!UNAVAIL=return] dns <span class="command"><strong>myhostname</strong></span>
networks:       files

protocols:      db files
services:       db files
ethers:         db files
rpc:            db files

netgroup:       nis</pre><p>可以使用 <span class="command"><strong>glibc</strong></span> 软件包中的 <span class="command"><strong>getent</strong></span> 工具检查配置的有效性：</p><pre class="programlisting">$ getent ahosts `hostname`
::1       STREAM omega
::1       DGRAM
::1       RAW
127.0.0.2       STREAM
127.0.0.2       DGRAM
127.0.0.2       RAW</pre><p>本例中的本地主机名是 <code class="varname">omega</code></p></div><div class="refsect1"><a name="id-1.7"></a><h2 id="参见">参见<a class="headerlink" title="Permalink to this headline" href="nss-myhostname.html#%E5%8F%82%E8%A7%81">¶</a></h2><p>
      <a href="systemd.html#"><span class="citerefentry"><span class="refentrytitle">systemd</span>(1)</span></a>,
      <a href="nss-systemd.html#"><span class="citerefentry"><span class="refentrytitle">nss-systemd</span>(8)</span></a>,
      <a href="nss-resolve.html#"><span class="citerefentry"><span class="refentrytitle">nss-resolve</span>(8)</span></a>,
      <a href="nss-mymachines.html#"><span class="citerefentry"><span class="refentrytitle">nss-mymachines</span>(8)</span></a>,
      <a href="http://man7.org/linux/man-pages/man5/nsswitch.conf.5.html"><span class="citerefentry"><span class="refentrytitle">nsswitch.conf</span>(5)</span></a>,
      <a href="http://man7.org/linux/man-pages/man1/getent.1.html"><span class="citerefentry"><span class="refentrytitle">getent</span>(1)</span></a>
    </p></div></div></body></html>
